home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / vol_200 / 240_01 / backgmmn.doc < prev    next >
Text File  |  1987-07-29  |  14KB  |  317 lines

  1. /*
  2. **  backgmmn.doc - history file
  3.  
  4.    Program  : PC-Gammon IV with User-Defined ** COLOR **
  5.    Computer : 100% IBM PC compatibles 
  6.    Language : Microsoft C 4.00
  7.             :
  8.    Author   : David C. Oshel
  9.             : 1219 Harding Avenue
  10.             : Ames, Iowa 50010
  11.             : August 10, 1986
  12.  
  13.  
  14. HISTORY
  15. -------
  16. v7.0 6/13/87 - Ported from MSC 4.0 to Turbo C 1.0.  Generally an easy port,
  17.                but Turbo C has a number of undocumented macros, such as
  18.                min() and max() in stdlib.h, that were briefly a puzzle.
  19.                Also, MS C "signal" replaced by Turbo C "ctrlbrk", and various
  20.                other small edits such as "alloc.h" instead of "malloc.h",
  21.                "farfree" for "_ffree", etc.  Turbo C introduced a number
  22.                of functions or macros which collided with names I had
  23.                already defined -- esp. sleep(), peek(), min(), max().
  24.  
  25.                Compile the CIAO.C module using UNSIGNED CHARS, as there
  26.                is a difference in implementation there somewhere.  This
  27.                may have introduced a bug into Typeafile, which no longer
  28.                wordwraps properly.  Borland seems to have found ways to
  29.                prefer idiosyncrasy even in ANSI standard C.
  30.  
  31.                The program runs noticeably faster -- sounds are higher
  32.                pitched, play is excessively rapid, etc. -- under Turbo C.
  33.  
  34.  
  35. v6.0 9/08/86 - Now linking to CIAO.LIB, with fast video RAM output
  36.  
  37. v5.3 9/01/86 - Minor change, just added typeafile for the user's manual.
  38.                Typeafile is a new addition to the IO.LIB.
  39.  
  40. v5.2 8/21/86 - Got rid of clairol.obj, in favor of an improved io.lib.
  41.                Includes ambiguity test in clairol(), adds a mode
  42.                argument to the vid_init() routine, adds a vid_exit()
  43.                routine.  The library is smaller, and allows a smaller
  44.                obj file where only sound or keyin is needed.  The clairol()
  45.                function now does a wputs("^0"); on exit to ensure the new 
  46.                normal mode is set.
  47.  
  48.                PC-Gammon now allows a command line parameter.  
  49.                Sets video mode 2 instead of video mode 3, if present.  
  50.                Usage: backgmmn b&w
  51.  
  52.                Actually, any argument will do, but document "b&w" for users.
  53.  
  54.  
  55.  
  56. v5.1 8/18/86 - minor add: "^0" to mycount(), yrcount() format strings
  57.                minor edits in backgmmn.h to remove obsolete function decls
  58.  
  59.                Note that wprintf("^%d", cnt); is DANGEROUS, depending on
  60.                how the cnt argument gets formatted.  The correct usage in
  61.                this case is wprintf("^0%d", cnt);, with the zero!  This
  62.                ensure that the ^ escape finds a legitimate command char in
  63.                the anticipated position.
  64.  
  65.                Note that the current main() and command() fns in bg0.c were
  66.                split apart in version 5.0:  vid_init() was in the wrong
  67.                place to correctly save the startup screen for cga!  The
  68.                public domain version is ok, has the change.  Note also that
  69.                setting video mode 3 absolutely will clear the cga startup
  70.                screen and send cursor home, so there's no point saving it,
  71.                but we do it anyway.  It's a good screen to come home to.
  72.  
  73.                TO DO: ruminate on improvements in playing strategy.  Torve
  74.                seems unexpectedly strong, lately.  Have I overlooked some
  75.                strength not noted there before?  Need to pin that last bug
  76.                in the Arrange command, if I can figure out what it is!  Is
  77.                Torve reacting to full moon?  Are small but noticeable changes 
  78.                in strategy the result of using a $600 compiler for a change?
  79.                Have I finally gone mad?
  80.  
  81.  
  82. Version 5.0  August 17, 1986, the LAST public domain version of PC-Gammon!
  83.  
  84.    a) Reorganized the code into four sensible modules, with a
  85.       common header file, for use with MAKE.  The source files are
  86.       backgmmn.h, bg0.c, bg1.c, bg2.c, bg3.c.  Supporting modules
  87.       are clairol.obj, and its .h file.
  88.  
  89.    b) Revised code to use the new wprintf() function. (<stdarg.h> in
  90.       Microsoft C 4.0 is magic!)
  91.  
  92.       Simplified the savescreen(), restorescreen() calls to do automatic
  93.       heap allocation/free.
  94.  
  95.    c) Added the CLAIROL module to change screen attributes.
  96.       (Combined module from CURSES.C, SOUND.C., plus clairol() routine.)
  97.  
  98.    d) In other words, PC-Gammon now has full color support for the cga 
  99.       and color monitor.  WITHOUT sacrificing special support for the
  100.       monochrome adapter.
  101.  
  102.  
  103.  
  104. Version 4.4  August 12, 1986
  105.  
  106.    a) Revised BGTOKENS.C to default to my preferred stones.
  107.    b) Added H(ues stub to main command line, if not monochrome.
  108.  
  109. Version 4.3  August 10, 1986
  110.  
  111.    a) Minor changes to CURSES.OBJ file.  Variables for screen
  112.       attributes can support color selection in a H(ues command.
  113.       Appended the old GETMS file to CURSES.  Some changes in
  114.       argument order for windowing commands (in the direction
  115.       of easier to remember and more consistent).
  116.  
  117. Version 4.2  August 3, 1986
  118.  
  119.    a) V.4.1 FAILED its test on the cga card!  Modified CURSES.OBJ to
  120.       correctly set 80x25 text 16/8 mode on PCs with cga cards.  Moved
  121.       call to title() into setup(), so the change is noted before
  122.       anything is output to screen.  Tested results on NCR PC Model 3
  123.       with cga, and on Epson Equity I.  Passed with flying colors (for
  124.       B&W, that is)!
  125.  
  126. Version 4.1  August 2, 1986
  127.  
  128.    a) Minor revision to CURSES.OBJ allows wink() to handle '\b'.
  129.       Discovered that Microsoft C 3.00 interprets '\008' as '\0', 
  130.       not '\b', so changed the backgammon source code accordingly.
  131.  
  132. Version 4.0  August 2, 1986 (PC clone version Gammon IV.40)
  133.  
  134.    a) Added sound and ultra-fast screen io.  Makes it a game for 100% 
  135.       clones only, now.  Totally ignores ANSI.SYS, if present.
  136.  
  137.    b) Altered keyin() and getms() to accept function parameters for
  138.       the wait-for-input and the do-on-ESC routines.  For separate 
  139.       compilation later (maybe).
  140.  
  141.    c) Revised references to '\n' in user input routines because
  142.       keyin() does not return newline when it encounters ENTER. 
  143.       In effect, the "All ok?" question now accepts ENTER and does
  144.       not force users to type 'Y'.  
  145.  
  146.    d) Fixed a bug in user's dice routine.  
  147.  
  148.    e) Known BUG:  Computer does not come in from the bar on the first 
  149.       roll after Arrange-ing the board.
  150.       
  151.  
  152.  
  153. Version 3.1:  July 29, 1986 (MS-DOS version Gammon IV.31)
  154.  
  155.    a) Changed the keyin() routine to correctly handle Fn key inputs.
  156.       Extended ASCII is returned with high bit set from now on.
  157.  
  158.  
  159.  
  160. Version 3:   July 27, 1986 (Original MS-DOS version Gammon IV.30)
  161.  
  162.    a) Numerous minor changes to the code reflect differences in
  163.       C compilers and their standard libraries.   In particular,
  164.       Microsoft C implements some functions as macros -- locating all
  165.       the side effects of this approach can be troublesome when
  166.       porting.
  167.  
  168.       Otherwise, this is just a "quick and dirty" port; old code which
  169.       implemented for the Lear-Siegler ADM-3A terminal's lack of a
  170.       clear-to-end-of-line command has not been optimized (or cleaned
  171.       up, depending on your point of view).
  172.  
  173.    b) The graphics toggle (CP/M Kaypro) is a hilite toggle (MS-DOS ANSI). 
  174.  
  175.    c) User bailout is ESC.  Control-C is trapped by MS-DOS and halts
  176.       the program.
  177.  
  178.    d) The "kill typeahead" feature (in BG0.C) is commented out to improve
  179.       play under the abominably slow conditions of IBM-clone i/o.
  180.  
  181.  
  182.  
  183. Version 2:   March 28, 1986 (CP/M)
  184.  
  185.    a) Fixed the bug in which the doubling cube might revert to its
  186.       default value if the computer took back a move, and if the cube
  187.       had been doubled one or more times during the opening roll-off
  188.       but not yet offered.
  189.  
  190.    b) Fixed an odd bug in the Arrange command which occasionally caused 
  191.       stones to switch allegiance to the o